package com.example.demo.mapper;

import com.example.demo.entity.Favorites;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * <p>
 * 收藏表 Mapper 接口
 * </p>
 *
 * @author Mr.sdy
 * @since 2024-06-05
 */
@Mapper
public interface FavoritesMapper extends BaseMapper<Favorites> {

    /**
     * 根据用户ID和文章ID判断是否已经收藏。
     * @return 如果已经收藏，返回1；否则返回0。
     */
    @Insert("INSERT INTO favorites (user_id, article_id,create_time) VALUES (#{userId}, #{articleId},now())")
    Integer favoriteByUserAndArticle(Favorites favorites);


    /**
     * 根据文章ID统计收藏数。
     * @param articleId 文章ID，用于指定收藏记录的文章。
     * @return 收藏量，返回的是一个整数，表示指定文章的收藏次数。
     */
    @Select("SELECT COUNT(*) FROM favorites WHERE article_id = #{articleId}")
    Integer countfavoriteByArticle(@Param("articleId") Integer articleId);

    /**
     * 根据用户ID和文章ID统计收藏数。
     * @return 表示指定用户对指定文章的收藏 1是有，0是没有。
     */
    @Select("SELECT * FROM favorites WHERE user_id = #{userId} AND article_id = #{articleId}")
    List<Favorites>  selectFavoriteByUserAndArticle(Favorites favorites);

    // 使用文章ID查询
    @Select("SELECT * FROM favorites WHERE article_id = #{articleId}")
    List<Favorites> selectFavoritesByArticleId(@Param("articleId") Integer articleId);
    // 查询所有用户收藏
    @Select("SELECT * FROM favorites where flag = 1")
    List<Favorites> selectAllFavorites();
    // 删除用户收藏
    @Delete("DELETE FROM favorites WHERE user_id = #{userId} AND article_id = #{articleId} ")
    Integer deleteFavorites(Favorites favorites);

    /**
     * 根据用户ID和文章ID查询收藏记录
     * @param favorites
     * @return
     */
    List<Favorites> selectFavorites(Favorites favorites);
}
